<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
</head>

<body>
    <script>
        // console.log(num);
        var num = 10;

        // var 声明的变量会把声明语句提到作用域的顶端 但是赋值语句留在原地

        function fun1() {
            // console.log(str);
            var str = "aaa";
        }
        // console.log(str);

        // console.log(num2);
        let num2 = 20;

        // console.log(window.num);
        // console.log(window.num2);

        // 变量的作用域的概念就是 变量可以活动的范围 出了这个作用域 就没有这个变量了
        //   var 变量的作用域是函数作用域 也就是说只有函数的{}能区别var变量的作用域别的都不行
        //   let const 块级作用域 只要看到{}就是一个作用域
        {
            let data = "大怨种";
            var data2 = "小怨种";
        }
        console.log(data2);
        console.log(data);
    </script>
</body>

</html>